// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	10/9/2014 11:59:44 AM				
// -----------------------------

#ifndef _Application_h
#define _Application_h

#include "Common.h"

class Game;
class Timer;
class Window;
class FileManager;
class InputManager;
class AudioManager;
class RenderManager;
class Scene;


class Application
{
public:
	Application();
	~Application();

	Bool	Init();
	Int32	Run();
	void	Quit();

	Game*			GetGame() const;
	Timer*			GetTimer() const;
	Window*			GetWindow() const;
	FileManager*	GetFiles() const;
	InputManager*	GetInput() const;
	AudioManager*	GetAudio() const;
	RenderManager*	GetRenderer() const;

	void			EnableCursor(Bool bEnable) const;
	void			ToggleFullscreen();

	void			SetScene(Scene* lpScene);
	Scene*			GetScene() const;

private:

	Game*			m_lpGame;
	Timer*			m_lpTimer;
	Window*			m_lpWindow;
	FileManager*	m_lpFileManager;
	InputManager*	m_lpInputManager;
	AudioManager*	m_lpAudioManager;
	RenderManager*	m_lpRenderManager;
	
	Scene*		m_lpScene;

	Application(const Application& refApplication);
	Application& operator=(const Application& refApplication);
};

#endif